<?php
// +----------------------------------------------------------------------
// | likeadmin快速开发前后端分离管理后台（PHP版）
// +----------------------------------------------------------------------
// | 欢迎阅读学习系统程序代码，建议反馈是我们前进的动力
// | 开源版本可自由商用，可去除界面版权logo
// | gitee下载：https://gitee.com/likeshop_gitee/likeadmin
// | github下载：https://github.com/likeshop-github/likeadmin
// | 访问官网：https://www.likeadmin.cn
// | likeadmin团队 版权所有 拥有最终解释权
// +----------------------------------------------------------------------
// | author: likeadminTeam
// +----------------------------------------------------------------------

namespace app\api\controller;


use app\api\logic\IndexLogic;
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
use think\facade\Log;
use think\response\Json;


/**
 * index
 * Class IndexController
 * @package app\api\controller
 */
class IndexController extends BaseApiController
{


    public array $notNeedLogin = ['index', 'config', 'policy', 'decorate', 'banner', 'email'];


    /**
     * @notes 首页数据
     * @return Json
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\DbException
     * @throws \think\db\exception\ModelNotFoundException
     * @author 段誉
     * @date 2022/9/21 19:15
     */
    public function index()
    {
        $result = IndexLogic::getIndexData();
        return $this->data($result);
    }


    /**
     * @notes 全局配置
     * @return Json
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\DbException
     * @throws \think\db\exception\ModelNotFoundException
     * @author 段誉
     * @date 2022/9/21 19:41
     */
    public function config()
    {
        $result = IndexLogic::getConfigData();
        return $this->data($result);
    }


    /**
     * @notes 政策协议
     * @return Json
     * @author 段誉
     * @date 2022/9/20 20:00
     */
    public function policy()
    {
        $type = $this->request->get('type/s', '');
        $result = IndexLogic::getPolicyByType($type);
        return $this->data($result);
    }


    /**
     * @notes 装修信息
     * @return Json
     * @author 段誉
     * @date 2022/9/21 18:37
     */
    public function decorate()
    {
        $id = $this->request->get('id/d');
        $result = IndexLogic::getDecorate($id);
        return $this->data($result);
    }

    /**
     * @notes 获取轮播图
     * @return Json
     * @author 段誉
     * @date 2022/9/21 18:37
     */
    public function banner()
    {
        $result = IndexLogic::getBanner();
        return $this->data($result);
    }

    /**
     * @notes 测试发邮件
     * @return Json
     * @author 段誉
     * @date 2022/9/21 18:37
     */
    public function email()
    {

        $data = [
            'user_email' => 'fxg_ws@163.com',  //接收人邮箱
            'code' => mt_rand(1000, 9999)
        ];

        $this->sendEmail($data);
    }

    private function sendEmail($data) {
        //实例化PHPMailer核心类
        $mail = new PHPMailer();
        $mail->IsSMTP(); // 启用SMTP
        $mail->Host = env('email.host'); //SMTP服务器 以qq邮箱为例子
        $mail->Port = env('email.port');  //邮件发送端口
        $mail->SMTPAuth = true;  //启用SMTP认证
        $mail->SMTPSecure = "ssl";   // 设置安全验证方式为ssl
        $mail->CharSet = "UTF-8"; //字符集
        $mail->Encoding = "base64"; //编码方式
        $mail->Username = env('email.username');  //发件人邮箱
        $mail->Password = env('email.password');  //发件人密码 ==>重点：是授权码，不是邮箱密码
        $mail->Subject = '来自' . env('email.from_name') . '的注册账号验证'; //邮件标题
        $mail->From = env('email.from_email');  //发件人邮箱
        $mail->FromName = env('email.from_name');  //发件人姓名
        if($data && is_array($data)){
            $mail->AddAddress($data['user_email']); //添加收件人
            $mail->IsHTML(true); //支持html格式内容
            $mail->Body = '尊敬的用户：<br/>您的注册验证码如下<br/>' . '<h1>' . $data['code'] . '</h1>'; //邮件主体内容
            //发送成功就删除
            if ($mail->Send()) {
                //echo "Mailer Error: ".$mail->ErrorInfo;// 输出错误信息,用以邮件发送不成功问题排查
                return 1;
            }else{
                return -1;
            }

        }

    }


}